package 力扣算法练习.main1.newPart1;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;


//笔试强训开始
public class day1 {
    /*
    https://www.nowcoder.com/questionTerminal/813adf9873ea433cab6602e5461d00af
    数组中有一个数字出现的次数超过数组长度的一半，请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。
    由于数字2在数组中出现了5次，超过数组长度的一半，因此输出2。如果不存在则输出0。
     */
    //因为进行了排序所以时间复杂度比较高
    public int find(int[] arr){
        int len=arr.length;
        Arrays.sort(arr);
        int temp=arr[0];//记录出现最多的数
        int count=0;//记录出现的次数
        for (int i = 0; i < len; i++) {
            if (temp==arr[i]){
                count++;
                if (count>=(len>>1)){
                    return temp;
                }
            }else{
                temp=arr[i];
                count=0;
            }
        }
        return 0;
    }
    public int find1(int [] arr){
        //用map集合解决,用空间换时间
        Map<Integer,Integer> temp=new HashMap<>();
        int half=arr.length>>1;
        int t,second;//second表示出现的次数
        for (int i = 0; i < arr.length; i++) {
            t=arr[i];
            if (temp.get(t)==null){
                temp.put(t,1);
            }else {
                second=temp.get(t)+1;
                if (second>=half){
                    return t;
                }
                temp.put(t,second);
            }
        }
        return 0;
    }

    /*
    读入一个字符串str，输出字符串str中的连续最长的数字串
    https://www.nowcoder.com/questionTerminal/bd891093881d4ddf9e56e7cc8416562d
     */
    public void find2(String str){
        StringBuilder temp=new StringBuilder();
        char c;
        String result=new String();//存储结果字符串
        int count=0;//记录字符串的长度
        for (int i = 0; i < str.length(); i++) {
            c=str.charAt(i);
            if (c>=48&&c<=57){
                temp.append(c);
                count++;
                if (result.length()<count){
                    result=temp.toString();
                }
            }else {
                count=0;
                temp=new StringBuilder();
            }
        }
        System.out.println(result);

    }

    public static void main(String[] args) {
        day1 iu=new day1();
        iu.find2("abcd12345ed125ss123456789");
    }
}

